cmake_minimum_required(VERSION 3.4.1)

message( STATUS "A CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}")

set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -Werror" )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D _LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS -Os -fPIC" )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti" )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DGOOGLE_PROTOBUF_NO_RTTI -DHAVE_PTHREAD")

set(ANDROID_GTEST_DIR "../../../external/googletest")
add_subdirectory("${ANDROID_GTEST_DIR}/googletest"
  googletest-build
)

include("../../src/protobuf/protobuf.cmake")

# Save the generation dir as it gets overwritten when we add_subdirectory tuningfork
set(PGENS_DIR "${PROTO_GENS_DIR}")

protobuf_generate_full_cpp( ${CMAKE_CURRENT_SOURCE_DIR}/proto
  proto/tuningfork.proto
  proto/tuningfork_clearcut_log.proto
  proto/dev_tuningfork.proto
)
protobuf_generate_nano_c( ${CMAKE_CURRENT_SOURCE_DIR}/proto
  proto/dev_tuningfork.proto
  proto/tuningfork_clearcut_log.proto
)

message( STATUS "B CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}")
add_subdirectory("../../src/tuningfork"
  tuningfork-build
)

include_directories(
  "${ANDROID_GTEST_DIR}/googletest/include"
  ../../src
  ../../src/common
  ../../include
  ../../../external/nanopb-c
  ${PGENS_DIR}
  ${PROTOBUF_SRC_DIR}
  ${PROTOBUF_SRC_DIR}/..
)

add_executable(tuningfork_test
  main.cpp
  histogram_test.cpp
  tuningfork_test.cpp
  annotation_test.cpp
  serialization_test.cpp
  ${PGENS_DIR}/nano/tuningfork_clearcut_log.pb.c
  ${PGENS_DIR}/nano/dev_tuningfork.pb.c
  ${PGENS_DIR}/full/dev_tuningfork.pb.cc
  ${PGENS_DIR}/full/tuningfork.pb.cc
  ${PGENS_DIR}/full/tuningfork_clearcut_log.pb.cc
)
add_library( protobuf-static
  STATIC ${PROTOBUF_LITE_SRCS} ${PROTOBUF_SRCS}
)
target_compile_options(protobuf-static PUBLIC "-Wno-tautological-constant-compare"
                                              "-Wno-enum-compare-switch")

target_link_libraries(tuningfork_test
  gtest
  tuningfork_static
  protobuf-static
  log
  GLESv2
)
